{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 193,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>日期</th>\n",
       "      <th>城市</th>\n",
       "      <th>新增确诊</th>\n",
       "      <th>新增治愈</th>\n",
       "      <th>新增死亡</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2020-01-10</td>\n",
       "      <td>武汉</td>\n",
       "      <td>41</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2020-01-11</td>\n",
       "      <td>武汉</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2020-01-12</td>\n",
       "      <td>武汉</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2020-01-15</td>\n",
       "      <td>武汉</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2020-01-16</td>\n",
       "      <td>武汉</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          日期  城市  新增确诊  新增治愈  新增死亡\n",
       "0 2020-01-10  武汉    41     2     1\n",
       "1 2020-01-11  武汉     0     4     0\n",
       "2 2020-01-12  武汉     0     1     0\n",
       "3 2020-01-15  武汉     0     5     1\n",
       "4 2020-01-16  武汉     4     3     0"
      ]
     },
     "execution_count": 193,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 读取数据\n",
    "import pandas as pd\n",
    "data = pd.read_excel(\"附件1.xlsx\",header =0)#导入数据\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据处理，更直观的看出每个城市累计确诊、治愈、死亡的数量变化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 194,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\86178\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:9: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  if __name__ == '__main__':\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "            城市  累计确诊人数  累计治愈人数  累计确诊死亡\n",
      "日期                                    \n",
      "2020-01-10  武汉      41       2       1\n",
      "2020-01-15  武汉      41      12       2\n",
      "2020-02-10  武汉   18454    1173     748\n",
      "2020-02-15  武汉   39462    3151    1233\n",
      "2020-03-10  武汉   49978   33264    2423\n",
      "2020-03-15  武汉   50003   38537    2469\n",
      "2020-04-10  武汉   50008   46154    2577\n",
      "2020-04-15  武汉   50008   46325    2579\n",
      "2020-05-10  武汉   50339   46464    3869\n",
      "2020-05-15  武汉   50339   46464    3869\n",
      "2020-06-10  武汉   50340   46471    3869\n",
      "2020-06-15  武汉   50340   46471    3869\n",
      "            城市  累计确诊人数  累计治愈人数  累计确诊死亡\n",
      "日期                                    \n",
      "2020-01-10  深圳       0       0       0\n",
      "2020-01-15  深圳       0       0       0\n",
      "2020-02-10  深圳     375      56       0\n",
      "2020-02-15  深圳     414     115       0\n",
      "2020-03-10  深圳     417     387       3\n",
      "2020-03-15  深圳     417     401       3\n",
      "2020-04-10  深圳     419     414       3\n",
      "2020-04-15  深圳     419     414       3\n",
      "2020-05-10  深圳     423     414       3\n",
      "2020-05-15  深圳     423     414       3\n",
      "2020-06-10  深圳     423     414       3\n",
      "2020-06-15  深圳     423     414       3\n",
      "            城市  累计确诊人数  累计治愈人数  累计确诊死亡\n",
      "日期                                    \n",
      "2020-01-10  保定       0       0       0\n",
      "2020-01-15  保定       0       0       0\n",
      "2020-02-10  保定      30       9       0\n",
      "2020-02-15  保定      32      19       0\n",
      "2020-03-10  保定      32      32       0\n",
      "2020-03-15  保定      32      32       0\n",
      "2020-04-10  保定      32      32       0\n",
      "2020-04-15  保定      32      32       0\n",
      "2020-05-10  保定      32      32       0\n",
      "2020-05-15  保定      32      32       0\n",
      "2020-06-10  保定      32      32       0\n",
      "2020-06-15  保定      36      32       0\n"
     ]
    }
   ],
   "source": [
    "# 整理数据 先将数据中的城市分类，再对逐个城市逐行即每个日期（缺失的日期补全）进行累加得到累计确诊，治愈，死亡人数。\n",
    "data[\"城市\"].value_counts()#排序城市\n",
    "data.rename(columns={'新增确诊':'累计确诊人数'},inplace=True)#更改列标签\n",
    "data.rename(columns={'新增治愈':'累计治愈人数'},inplace=True)#更改列标签\n",
    "data.rename(columns={'新增死亡':'累计确诊死亡'},inplace=True)#更改列标签\n",
    "index = pd.date_range('20200110','20200630')#创建日期索引\n",
    "for i in range(0,len(data[\"城市\"].value_counts())):#对城市进行循环\n",
    "    da = data[data[\"城市\"] == data[\"城市\"].value_counts().index[i]]#得到只包含一个城市的数据\n",
    "    da['日期'] = pd.to_datetime(da['日期'])\n",
    "    da = da.set_index('日期').reindex(index,fill_value=0)#进行日期的补全\n",
    "    da['城市'] = data['城市'].value_counts().index[i]#补全城市列数据\n",
    "    da = da.rename_axis('日期').reset_index()#保留日期列\n",
    "    da['累计确诊人数'].astype('int')\n",
    "    da['累计治愈人数'].astype('int')\n",
    "    da['累计确诊死亡'].astype('int')\n",
    "    da['累计确诊人数'] = da['累计确诊人数'].cumsum()#累加\n",
    "    da['累计治愈人数'] = da['累计治愈人数'].cumsum()#累加\n",
    "    da['累计确诊死亡'] = da['累计确诊死亡'].cumsum()#累加\n",
    "    list1 =[]#空列表拿来存放想找到的城市的索引\n",
    "    list2 = ['武汉','深圳','保定']\n",
    "    if data[\"城市\"].value_counts().index[i] in list2:#判断是否是要列出数据的城市\n",
    "        list1.append(i)#将索引存起来\n",
    "    if i in list1:#判断城市\n",
    "        da['日期'] = pd.to_datetime(da['日期'])#转换类型供查找\n",
    "        da1 = da.set_index('日期')#将日期作为索引\n",
    "        s1 = da1['2020-01-10':'2020-01-10']#存放第一个数据\n",
    "        for i in range(1, 7):#数据是从20年1月到6月的 故range(1,7)\n",
    "            s = da1['2020-0{}-15'.format(i):'2020-0{}-15'.format(i)]\n",
    "            s1 = pd.concat([s1, s], axis=0, join='outer')#数据合并\n",
    "            s = da1['2020-0{}-10'.format(i+1):'2020-0{}-10'.format(i+1)]\n",
    "            s1 = pd.concat([s1, s], axis=0, join='outer')\n",
    "        print(s1)#打印出来\n",
    "    da = da.set_index(\"城市\")  # 将城市作为索引 存入csv是第一行便是城市\n",
    "    if i == 0:\n",
    "        da.to_csv(\"task3_1.csv\", index=True, na_rep='0', encoding='GB18030',mode = 'a')#写入csv文件，包括表头和索引 encoding需要用GB18030否则文字乱码\n",
    "    else:\n",
    "        da.to_csv(\"task3_1.csv\", index=True, header = None,na_rep='0', encoding='GB18030', mode='a')#追加写入，不包括表头\n",
    "\n",
    "\n",
    "# 根据附件1中“城市疫情”的数据统计各城市自首次通报确诊病例后至 6 月 30日的每日累计确诊人数、累计治愈人数和累计死亡人数，将结果保存为“task3_1.csv”"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 结合附件 1“城市省份对照表”统计各省级行政单位按日新增和累计数据，将结果保存为“task3_2.csv”"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 199,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "            新增确诊  新增治愈  新增死亡  省份  累计确诊人数  累计治愈人数  累计确诊死亡\n",
      "日期                                                      \n",
      "2020-01-15     0     5     1  湖北      41      12       2\n",
      "2020-02-15  1839   849   139  湖北   56197    5860    1596\n",
      "2020-03-15     4   816    14  湖北   67798   55247    3099\n",
      "2020-04-15     0    33     0  湖北   67803   63477    3222\n",
      "2020-05-15     0     0     0  湖北   68134   63616    4512\n",
      "2020-06-15     0     0     0  湖北   68135   63623    4512\n",
      "            新增确诊  新增治愈  新增死亡  省份  累计确诊人数  累计治愈人数  累计确诊死亡\n",
      "日期                                                      \n",
      "2020-01-15     0     0     0  广东       0       0       0\n",
      "2020-02-15    22    50     0  广东    1316     434       2\n",
      "2020-03-15     4     5     0  广东    1361    1292       8\n",
      "2020-04-15     5     0     0  广东    1571    1392       8\n",
      "2020-05-15     0     0     0  广东    1589    1392       8\n",
      "2020-06-15     3     0     0  广东    1628    1394       8\n",
      "            新增确诊  新增治愈  新增死亡  省份  累计确诊人数  累计治愈人数  累计确诊死亡\n",
      "日期                                                      \n",
      "2020-01-15     0     0     0  河北       0       0       0\n",
      "2020-02-15     9    14     0  河北     300     100       3\n",
      "2020-03-15     0     0     0  河北     318     310       6\n",
      "2020-04-15     1     1     0  河北     328     314       6\n",
      "2020-05-15     0     0     0  河北     328     319       6\n",
      "2020-06-15     4     0     0  河北     332     320       6\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "index = pd.date_range('20200110','20200630')\n",
    "def settime(da,sf):#补齐日期\n",
    "    da['日期'] = pd.to_datetime(da['日期'])\n",
    "    da = da.set_index('日期').reindex(index, fill_value=0)\n",
    "    da['省份'] = sf\n",
    "    da = da.rename_axis('日期').reset_index()\n",
    "    return da\n",
    "\n",
    "data_sheet2 = pd.read_excel(\"附件1.xlsx\", header=0, sheet_name=1)  # 导入数据 sheet_name=1读取第二张表\n",
    "list_keys = []  # 存储key\n",
    "list_values = []  # 存储value\n",
    "for i in range(0, len(data_sheet2)):  # 将表2的数据写入列表\n",
    "    list_keys.append(data_sheet2['城市'][i])\n",
    "    list_values.append(data_sheet2['省份'][i])\n",
    "co = dict(zip(list_keys, list_values))  # 转换成城市对应省份的字典 字符串无法直接转换成字典，需要先用zip转换成元组再转换成字典\n",
    "\n",
    "data_sheet1_meiri = pd.read_excel(\"附件1.xlsx\", header=0)  # 导入表1数据 每日数据\n",
    "for i in range(0, len(data_sheet1_meiri)):  # 遍历数据 将城市改为省份\n",
    "    if data_sheet1_meiri['城市'][i] in co.keys():\n",
    "        data_sheet1_meiri.loc[[i], ['城市']] = co[data_sheet1_meiri['城市'][i]]\n",
    "\n",
    "data_sheet1_leiji = pd.read_excel(\"附件1.xlsx\", header=0)  # 导入表1数据 逐行累加数据\n",
    "for i in range(0, len(data_sheet1_leiji)):  # 遍历数据 将城市改为省份\n",
    "    if data_sheet1_leiji['城市'][i] in co.keys():\n",
    "        data_sheet1_leiji.loc[[i], ['城市']] = co[data_sheet1_leiji['城市'][i]]\n",
    "data_sheet1_leiji.rename(columns={'新增确诊': '累计确诊人数'}, inplace=True)  # 更改列标签\n",
    "data_sheet1_leiji.rename(columns={'新增治愈': '累计治愈人数'}, inplace=True)  # 更改列标签\n",
    "data_sheet1_leiji.rename(columns={'新增死亡': '累计确诊死亡'}, inplace=True)  # 更改列标签\n",
    "\n",
    "for i in range(0, len(data_sheet1_meiri[\"城市\"].value_counts())):  # 对城市进行循环\n",
    "    da_sheet1_meiri1 = data_sheet1_meiri[data_sheet1_meiri[\"城市\"] == data_sheet1_meiri[\"城市\"].value_counts().index[i]]  # 得到只包含一个城市的数据 但是日期存在重复\n",
    "    da_sheet1_leiji1 = data_sheet1_leiji[data_sheet1_leiji[\"城市\"] == data_sheet1_leiji[\"城市\"].value_counts().index[i]]  # 得到只包含一个城市的数据 但是日期存在在重复\n",
    "    da_sheet1_meiri = da_sheet1_meiri1.groupby('日期', as_index=False).sum()#得到日期数据整合好的\n",
    "    da_sheet1_leiji = da_sheet1_leiji1.groupby('日期', as_index=False).sum()  #得到日期数据整合好的\n",
    "    da_sheet1_meiri['省份'] = data_sheet1_meiri[\"城市\"].value_counts().index[i]#加入省份列\n",
    "    da_sheet1_leiji['省份'] = data_sheet1_leiji[\"城市\"].value_counts().index[i]  # 加入省份列\n",
    "    da_sheet1_leiji = settime(da_sheet1_leiji,data_sheet1_leiji[\"城市\"].value_counts().index[i])\n",
    "    da_sheet1_meiri = settime(da_sheet1_meiri,data_sheet1_meiri[\"城市\"].value_counts().index[i])\n",
    "\n",
    "    da_sheet1_leiji['累计确诊人数'] = da_sheet1_leiji['累计确诊人数'].cumsum()\n",
    "    da_sheet1_leiji['累计治愈人数'] = da_sheet1_leiji['累计治愈人数'].cumsum()\n",
    "    da_sheet1_leiji['累计确诊死亡'] = da_sheet1_leiji['累计确诊死亡'].cumsum()\n",
    "\n",
    "\n",
    "    da = pd.concat([da_sheet1_meiri, da_sheet1_leiji], axis=1, join='inner')\n",
    "    da = da.loc[:, ~da.columns.duplicated()]  # ~df.columns.duplicated()去除重复列\n",
    "\n",
    "    list_index = []  # 空列表拿来存放想找到的省份的索引\n",
    "    list_cs = ['湖北', '广东', '河北']\n",
    "    if data_sheet1_meiri[\"城市\"].value_counts().index[i] in list_cs:  # 判断是否是要列出数据的省份\n",
    "        list_index.append(i)  # 将索引存起来\n",
    "    if i in list_index:  # 判断省份\n",
    "        da['日期'] = pd.to_datetime(da['日期'])  # 转换类型供查找\n",
    "        da1 = da.set_index('日期')  # 将日期作为索引\n",
    "        s1 = da1['2020-01-15':'2020-01-15']  # 存放第一个数据\n",
    "        for k in range(2, 7):\n",
    "            s = da1['2020-0{}-15'.format(k):'2020-0{}-15'.format(k)]\n",
    "            s1 = pd.concat([s1, s], axis=0, join='outer')  # 数据合并\n",
    "        print(s1)  # 打印出来\n",
    "\n",
    "    da2 = da.set_index(\"省份\")  # 将省份作为索引 存入csv是第一行便是省份\n",
    "    if i == 0:\n",
    "        da2.to_csv(\"task3_2.csv\", index=True, na_rep='0',header=True, encoding='GB18030',\n",
    "                   mode='a')  # 写入csv文件，包括表头和索引 encoding需要用GB18030否则文字乱码\n",
    "    else:\n",
    "        da2.to_csv(\"task3_2.csv\", index=True, header=None, na_rep='0', encoding='GB18030',\n",
    "                   mode='a')  # 追加写入，不包括表头\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##  根据附件 1“A 市涉疫场所”在平面图中分别绘制该市第 6 天和第 10 天的疫情传播风险区域"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 201,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "list1 = [6,10]\n",
    "data_sheet3 = pd.read_excel(\"附件1.xlsx\", header=0, sheet_name=3)  # 导入数据 sheet_name=3读取第四张表\n",
    "for i in list1:\n",
    "    da_sheet3 = data_sheet3[data_sheet3['通报日期'] == i]\n",
    "    x, y = da_sheet3['横坐标（公里）'], da_sheet3['纵坐标（公里）']\n",
    "    label = da_sheet3['疫情场所']\n",
    "    figure = plt.figure(figsize=(10, 8))\n",
    "    c1 = np.random.rand(1,len(x))\n",
    "    for j in range(0,len(x)):\n",
    "        k =label.iloc[j]\n",
    "        plt.scatter(x.iloc[j], y.iloc[j], s=4300,label = k)  # 对于圆形，圆的面积为 area = pi/4*s .\n",
    "    plt.legend(prop={'family': 'SimHei', 'size': 15})  # fontproperties='SimHei'字体设置显示中文\n",
    "    plt.xlabel('横坐标（公里）')\n",
    "    plt.ylabel('纵坐标（公里）')\n",
    "    plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置字体显示中文\n",
    "    plt.rcParams['axes.unicode_minus'] = False  # 正常显示负号\n",
    "    plt.xlim(-15, 0)\n",
    "    plt.ylim(-4, 11)\n",
    "    plt.grid(True)\n",
    "    plt.title('第{}天'.format(i))\n",
    "    plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 可视化，展示国内新冠疫情汇总概要信息、时空变化情况、重点关注区域等"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 205,
   "metadata": {},
   "outputs": [
    {
     "ename": "TypeError",
     "evalue": "'list' object is not callable",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-205-c3f00b324cda>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m     50\u001b[0m             \u001b[0mMap\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     51\u001b[0m                 .add(series_name=\"确诊病例\",  # 系列名称，用于 tooltip 的显示，legend 的图例筛选。\n\u001b[1;32m---> 52\u001b[1;33m                      \u001b[0mdata_pair\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mlist\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mz\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mz\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     53\u001b[0m                      maptype='china')  # 地图类型\n\u001b[0;32m     54\u001b[0m                 .set_global_opts(  # 全局配置项\n",
      "\u001b[1;32m<ipython-input-205-c3f00b324cda>\u001b[0m in \u001b[0;36m<listcomp>\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m     50\u001b[0m             \u001b[0mMap\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     51\u001b[0m                 .add(series_name=\"确诊病例\",  # 系列名称，用于 tooltip 的显示，legend 的图例筛选。\n\u001b[1;32m---> 52\u001b[1;33m                      \u001b[0mdata_pair\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mlist\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mz\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mz\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     53\u001b[0m                      maptype='china')  # 地图类型\n\u001b[0;32m     54\u001b[0m                 .set_global_opts(  # 全局配置项\n",
      "\u001b[1;31mTypeError\u001b[0m: 'list' object is not callable"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Map,Timeline,Pie,Page,Line\n",
    "data = pd.read_csv(\"task3_2.csv\",header = 0,encoding='GB18030')#导入数据\n",
    "\n",
    "tr = Timeline().add_schema(play_interval=1000, height=40, is_loop_play=True,is_auto_play=True,control_position = \"left\",is_rewind_play= False)#时间轴\n",
    "tl = Timeline().add_schema(play_interval=1000, height=40, is_loop_play=True,is_auto_play=True,control_position = \"left\",is_rewind_play= False)#时间轴\n",
    "lis1 = []#存放日期\n",
    "lis2 = []#存放确诊人数\n",
    "lis3 = []#存放治愈人数\n",
    "lis4 = []#存放死亡人数\n",
    "for i in range(1,7):#以月为单位进行遍历 得到1月到i月各个省份的累计确诊，治愈，死亡人数\n",
    "    lis1.append(\"2020-0{}\".format(i))#存入日期\n",
    "    data2 = data#防止改变data\n",
    "    data2 = data2.set_index('日期')#将日期作为索引\n",
    "    data2 = data2.sort_index()#对日期进行排序 以便于对其进行切分\n",
    "    if i%2 == 1:#1，3，5月\n",
    "        data2 = data2.truncate('2020-01','2020-0{}-31'.format(i))#对数据进行切分，得到1月到i月的全部数据\n",
    "    else:\n",
    "        if i == 2:#2月\n",
    "            data2 = data2.truncate('2020-01','2020-0{}-28'.format(i))#对数据进行切分，得到1月到i月的全部数据\n",
    "        else:#4，6月\n",
    "            data2 = data2.truncate('2020-01','2020-0{}-30'.format(i))#对数据进行切分，得到1月到i月的全部数据\n",
    "    data2[['新增确诊','新增治愈','新增死亡','累计确诊人数' ,'累计治愈人数','累计确诊死亡']]=data2[['新增确诊','新增治愈','新增死亡','累计确诊人数' ,'累计治愈人数','累计确诊死亡']].astype(int)\n",
    "    data2 = data2.groupby('省份', as_index=False).sum()#对1月到i月的各个省份的各项数据进行合并 此时新增确诊人数即为累计确诊人数\n",
    "    data2['日期'] = '2020-0{}'.format(i)#加入日期列\n",
    "    lis2.append(int(data2.groupby('日期').sum()['新增确诊']))#存入确诊人数\n",
    "    lis3.append(int(data2.groupby('日期').sum()['新增治愈']))#存入治愈人数\n",
    "    lis4.append(int(data2.groupby('日期').sum()['新增死亡']))#存入死亡人数\n",
    "\n",
    "for i in range(1,7):#以月为单位进行遍历\n",
    "    data1 = data#防止改变data\n",
    "    data1 = data1.set_index('日期')#将日期作为索引\n",
    "    data1 = data1.sort_index()#对日期进行排序 以便于对其进行切分\n",
    "    if i%2 == 1:\n",
    "        data1 = data1.truncate('2020-01','2020-0{}-31'.format(i))\n",
    "    else:\n",
    "        if i == 2:\n",
    "            data1 = data1.truncate('2020-01','2020-0{}-28'.format(i))\n",
    "        else:\n",
    "            data1 = data1.truncate('2020-01','2020-0{}-30'.format(i))\n",
    "    data1[['新增确诊','新增治愈','新增死亡','累计确诊人数' ,'累计治愈人数','累计确诊死亡']]=data1[['新增确诊','新增治愈','新增死亡','累计确诊人数' ,'累计治愈人数','累计确诊死亡']].astype(int)\n",
    "    data1 = data1.groupby('省份', as_index=False).sum()#对1月到i月的各个省份的各项数据进行合并 此时新增确诊人数即为累计确诊人数  去除了日期列\n",
    "    data1['日期'] = '2020-0{}'.format(i)#加入日期列\n",
    "    data2 =data1\n",
    "    data2 = data2.sort_values(by='新增确诊', ascending=False)#从大到小排序‘新增确诊’这一列，方便得到累计确诊人数前五的省份\n",
    "    x = data2['省份'].tolist() #转换为list\n",
    "    y = data2['新增确诊'].tolist()\n",
    "    map = (#进行大屏显示 画地图\n",
    "            Map()\n",
    "                .add(series_name=\"确诊病例\",  # 系列名称，用于 tooltip 的显示，legend 的图例筛选。\n",
    "                     data_pair=[list(z) for z in zip(x, y)],\n",
    "                     maptype='china')  # 地图类型\n",
    "                .set_global_opts(  # 全局配置项\n",
    "                title_opts=opts.TitleOpts(title='疫情地图'),  # title_opts = opts.TitleOpts()主标题函数\n",
    "                visualmap_opts=opts.VisualMapOpts(  # visualmap_opts=opts.VisualMapOpts()视觉映射函数\n",
    "                    is_piecewise=True,  # 是否分段\n",
    "                    # 自定义的每一段的范围，以及每一段的文字，以及每一段的特别的样式。\n",
    "                    pieces=[{\"max\": 9, \"min\": 0, \"label\": \"0-9\", \"color\": \"#FFECEC\"},\n",
    "                            {\"max\": 99, \"min\": 10, \"label\": \"10-99\", \"color\": \"\t#FFB5B5\"},\n",
    "                            {\"max\": 499, \"min\": 100, \"label\": \"100-4999\", \"color\": \"#ff7575\"},\n",
    "                            {\"max\": 999, \"min\": 500, \"label\": \"500-999\", \"color\": \"#FF2D2D\"},\n",
    "                            {\"max\": 4999, \"min\": 1000, \"label\": \"1000-4999\", \"color\": \"\t#EA0000\"},\n",
    "                            {\"max\": 9999, \"min\": 5000, \"label\": \"5000-9999\", \"color\": \"#AE0000\"},\n",
    "                            {\"max\": 999999, \"min\": 9999, \"label\": \">9999\", \"color\": \"\t#750000\"},]\n",
    "                )\n",
    "            )\n",
    "        )\n",
    "    pie = (#画饼图\n",
    "        Pie()\n",
    "\n",
    "            .add(\n",
    "            series_name=\"累计确诊\",\n",
    "            radius=[\"40%\", \"55%\"],\n",
    "            data_pair=[list(z) for z in zip(x[:3], y[:3])],\n",
    "            label_opts=opts.LabelOpts(\n",
    "                position=\"outside\",\n",
    "                formatter=\"{a|{a}}{abg|}\\n{hr|}\\n {b|{b}: }{c}  {per|{d}%}  \",\n",
    "                background_color=\"#eee\",\n",
    "                border_color=\"#aaa\",\n",
    "                border_width=1,\n",
    "                border_radius=4,\n",
    "                rich={\n",
    "                    \"a\": {\"color\": \"#999\", \"lineHeight\": 22, \"align\": \"center\"},\n",
    "                    \"abg\": {\n",
    "                        \"backgroundColor\": \"#e3e3e3\",\n",
    "                        \"width\": \"100%\",\n",
    "                        \"align\": \"right\",\n",
    "                        \"height\": 22,\n",
    "                        \"borderRadius\": [4, 4, 0, 0],\n",
    "                    },\n",
    "                    \"hr\": {\n",
    "                        \"borderColor\": \"#aaa\",\n",
    "                        \"width\": \"100%\",\n",
    "                        \"borderWidth\": 0.5,\n",
    "                        \"height\": 0,\n",
    "                    },\n",
    "                    \"b\": {\"fontSize\": 16, \"lineHeight\": 33},\n",
    "                    \"per\": {\n",
    "                        \"color\": \"#eee\",\n",
    "                        \"backgroundColor\": \"#334455\",\n",
    "                        \"padding\": [2, 4],\n",
    "                        \"borderRadius\": 2,\n",
    "                    },\n",
    "                },\n",
    "            )\n",
    "        )\n",
    "            .set_global_opts(legend_opts=opts.LegendOpts(pos_left=\"left\", orient=\"vertical\"))\n",
    "            .set_series_opts(\n",
    "            tooltip_opts=opts.TooltipOpts(\n",
    "                trigger=\"item\", formatter=\"{a} <br/>{b}: {c} ({d}%)\"\n",
    "            )\n",
    "        )\n",
    "    )\n",
    "\n",
    "    line = (#画折线图\n",
    "        Line()\n",
    "            .add_xaxis(xaxis_data = lis1)\n",
    "            .add_yaxis(\"累计确诊人数\", y_axis=lis2, is_smooth=True)\n",
    "            .add_yaxis(\"累计治愈人数\", y_axis=lis3, is_smooth=True)\n",
    "            .add_yaxis(\"累计确诊死亡\", y_axis=lis4, is_smooth=True)\n",
    "            .set_series_opts(\n",
    "                areastyle_opts=opts.AreaStyleOpts(opacity=0.5),\n",
    "                label_opts=opts.LabelOpts(is_show=False),\n",
    "             )\n",
    "            .set_global_opts(\n",
    "            title_opts=opts.TitleOpts(title=\"全国疫情\"),\n",
    "            tooltip_opts=opts.TooltipOpts(trigger=\"axis\", axis_pointer_type=\"cross\"),\n",
    "            yaxis_opts=opts.AxisOpts(\n",
    "                type_=\"value\",\n",
    "                axistick_opts=opts.AxisTickOpts(is_show=True),\n",
    "                splitline_opts=opts.SplitLineOpts(is_show=True),\n",
    "            ),\n",
    "            xaxis_opts=opts.AxisOpts(type_=\"category\", boundary_gap=False),\n",
    "        )\n",
    "    )\n",
    "map.render('地图.html')\n",
    "pie.render('饼状.html')\n",
    "line.render('折线图.html')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 模型训练：数据预测使用python的机器学习sklearn中的指数平滑法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 249,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "      省份          日期  新增确诊  新增治愈 新增死亡  累计确诊人数  累计治愈人数  累计确诊死亡\n",
      "0     湖北  2020-01-10    41     2    1      41       2       1\n",
      "1     湖北  2020-01-11     0     4    0      41       6       1\n",
      "2     湖北  2020-01-12     0     1    0      41       7       1\n",
      "3     湖北  2020-01-13     0     0    0      41       7       1\n",
      "4     湖北  2020-01-14     0     0    0      41       7       1\n",
      "5     湖北  2020-01-15     0     5    1      41      12       2\n",
      "6     湖北  2020-01-16     4     3    0      45      15       2\n",
      "7     湖北  2020-01-17    17     4    0      62      19       2\n",
      "8     湖北  2020-01-18    59     5    1     121      24       3\n",
      "9     湖北  2020-01-19    77     1    1     198      25       4\n",
      "10    湖北  2020-01-20    72     0    2     270      25       6\n",
      "11    湖北  2020-01-21   105     3    3     375      28       9\n",
      "12    湖北  2020-01-22    69     0    8     444      28      17\n",
      "13    湖北  2020-01-23   105     3    7     549      31      24\n",
      "14    湖北  2020-01-24   180     1   15     729      32      39\n",
      "15    湖北  2020-01-25   323    10   13    1052      42      52\n",
      "16    湖北  2020-01-26   371     2   24    1423      44      76\n",
      "17    湖北  2020-01-27  1291     3   24    2714      47     100\n",
      "18    湖北  2020-01-28   840     0   25    3554      47     125\n",
      "19    湖北  2020-01-29  1032    10   37    4586      57     162\n",
      "20    湖北  2020-01-30  1220    26   42    5806      83     204\n",
      "21    湖北  2020-01-31  1347    50   45    7153     133     249\n",
      "22    湖北  2020-02-01  1921    49   45    9074     182     294\n",
      "23    湖北  2020-02-02  2103    80   56   11177     262     350\n",
      "24    湖北  2020-02-03  2345   101   64   13522     363     414\n",
      "25    湖北  2020-02-04  3156   125   65   16678     488     479\n",
      "26    湖北  2020-02-05  2987   113   70   19665     601     549\n",
      "27    湖北  2020-02-06  2447   184   69   22112     785     618\n",
      "28    湖北  2020-02-07  2831   298   81   24943    1083     699\n",
      "29    湖北  2020-02-08  2086   324   81   27029    1407     780\n",
      "...   ..         ...   ...   ...  ...     ...     ...     ...\n",
      "5934  湖北  2020-03-01   196  2570   42   67103   33990    2805\n",
      "5935  湖北  2020-03-02   114  2410   31   67217   36400    2836\n",
      "5936  湖北  2020-03-03   115  2389   37   67332   38789    2873\n",
      "5937  湖北  2020-03-04   134  1923   31   67466   40712    2904\n",
      "5938  湖北  2020-03-05   126  1487   29   67592   42199    2933\n",
      "5939  湖北  2020-03-06    74  1502   28   67666   43701    2961\n",
      "5940  湖北  2020-03-07    41  1543   27   67707   45244    2988\n",
      "5941  湖北  2020-03-08    36  1422   21   67743   46666    3009\n",
      "5942  湖北  2020-03-09    17  1152   17   67760   47818    3026\n",
      "5943  湖北  2020-03-10    13  1461   21   67773   49279    3047\n",
      "5944  湖北  2020-03-11     8  1242    9   67781   50521    3056\n",
      "5945  湖北  2020-03-12     5  1255    6   67786   51776    3062\n",
      "5946  湖北  2020-03-13     4  1390   13   67790   53166    3075\n",
      "5947  湖北  2020-03-14     4  1265   10   67794   54431    3085\n",
      "5948  湖北  2020-03-15     4   816   14   67798   55247    3099\n",
      "5949  湖北  2020-03-16     1   893   12   67799   56140    3111\n",
      "5950  湖北  2020-03-17     1   884   11   67800   57024    3122\n",
      "5951  湖北  2020-03-18     0   775    8   67800   57799    3130\n",
      "5952  湖北  2020-03-19     0   699    2   67800   58498    3132\n",
      "5953  湖北  2020-03-20     0   561    7   67800   59059    3139\n",
      "5954  湖北  2020-03-21     0   490    5   67800   59549    3144\n",
      "5955  湖北  2020-03-22     0   447    9   67800   59996    3153\n",
      "5956  湖北  2020-03-23     1   444    7   67801   60440    3160\n",
      "5957  湖北  2020-03-24     0   387    3   67801   60827    3163\n",
      "5958  湖北  2020-03-25     0   326    6   67801   61153    3169\n",
      "5959  湖北  2020-03-26     0   530    5   67801   61683    3174\n",
      "5960  湖北  2020-03-27     0   267    3   67801   61950    3177\n",
      "5961  湖北  2020-03-28     0   367    5   67801   62317    3182\n",
      "5962  湖北  2020-03-29     0   217    4   67801   62534    3186\n",
      "5963  湖北  2020-03-30     0   171    1   67801   62705    3187\n",
      "\n",
      "[162 rows x 8 columns]\n",
      "      省份          日期 新增确诊 新增治愈  新增死亡  累计确诊人数  累计治愈人数  累计确诊死亡\n",
      "81    湖北  2020-03-31    1   73     6   67802   62778    3193\n",
      "82    湖北  2020-04-01    0   45     6   67802   62823    3199\n",
      "83    湖北  2020-04-02    0   41     4   67802   62864    3203\n",
      "84    湖北  2020-04-03    1   50     4   67803   62914    3207\n",
      "85    湖北  2020-04-04    0   73     3   67803   62987    3210\n",
      "86    湖北  2020-04-05    0   69     2   67803   63056    3212\n",
      "87    湖北  2020-04-06    0   59     0   67803   63115    3212\n",
      "88    湖北  2020-04-07    0   69     1   67803   63184    3213\n",
      "89    湖北  2020-04-08    0   45     2   67803   63229    3215\n",
      "90    湖北  2020-04-09    0   49     1   67803   63278    3216\n",
      "91    湖北  2020-04-10    0   28     3   67803   63306    3219\n",
      "92    湖北  2020-04-11    0   17     0   67803   63323    3219\n",
      "93    湖北  2020-04-12    0   57     2   67803   63380    3221\n",
      "94    湖北  2020-04-13    0   25     0   67803   63405    3221\n",
      "95    湖北  2020-04-14    0   39     1   67803   63444    3222\n",
      "96    湖北  2020-04-15    0   33     0   67803   63477    3222\n",
      "97    湖北  2020-04-16  325   10  1290   68128   63487    4512\n",
      "98    湖北  2020-04-17    0    7     0   68128   63494    4512\n",
      "99    湖北  2020-04-18    0   13     0   68128   63507    4512\n",
      "100   湖北  2020-04-19    0    4     0   68128   63511    4512\n",
      "101   湖北  2020-04-20    0    3     0   68128   63514    4512\n",
      "102   湖北  2020-04-21    0    5     0   68128   63519    4512\n",
      "103   湖北  2020-04-22    0   28     0   68128   63547    4512\n",
      "104   湖北  2020-04-23    0   22     0   68128   63569    4512\n",
      "105   湖北  2020-04-24    0   24     0   68128   63593    4512\n",
      "106   湖北  2020-04-25    0   11     0   68128   63604    4512\n",
      "107   湖北  2020-04-26    0   12     0   68128   63616    4512\n",
      "108   湖北  2020-04-27    0    0     0   68128   63616    4512\n",
      "109   湖北  2020-04-28    0    0     0   68128   63616    4512\n",
      "110   湖北  2020-04-29    0    0     0   68128   63616    4512\n",
      "...   ..         ...  ...  ...   ...     ...     ...     ...\n",
      "6026  湖北  2020-06-01    0    0     0   68135   63620    4512\n",
      "6027  湖北  2020-06-02    0    0     0   68135   63620    4512\n",
      "6028  湖北  2020-06-03    0    0     0   68135   63620    4512\n",
      "6029  湖北  2020-06-04    0    3     0   68135   63623    4512\n",
      "6030  湖北  2020-06-05    0    0     0   68135   63623    4512\n",
      "6031  湖北  2020-06-06    0    0     0   68135   63623    4512\n",
      "6032  湖北  2020-06-07    0    0     0   68135   63623    4512\n",
      "6033  湖北  2020-06-08    0    0     0   68135   63623    4512\n",
      "6034  湖北  2020-06-09    0    0     0   68135   63623    4512\n",
      "6035  湖北  2020-06-10    0    0     0   68135   63623    4512\n",
      "6036  湖北  2020-06-11    0    0     0   68135   63623    4512\n",
      "6037  湖北  2020-06-12    0    0     0   68135   63623    4512\n",
      "6038  湖北  2020-06-13    0    0     0   68135   63623    4512\n",
      "6039  湖北  2020-06-14    0    0     0   68135   63623    4512\n",
      "6040  湖北  2020-06-15    0    0     0   68135   63623    4512\n",
      "6041  湖北  2020-06-16    0    0     0   68135   63623    4512\n",
      "6042  湖北  2020-06-17    0    0     0   68135   63623    4512\n",
      "6043  湖北  2020-06-18    0    0     0   68135   63623    4512\n",
      "6044  湖北  2020-06-19    0    0     0   68135   63623    4512\n",
      "6045  湖北  2020-06-20    0    0     0   68135   63623    4512\n",
      "6046  湖北  2020-06-21    0    0     0   68135   63623    4512\n",
      "6047  湖北  2020-06-22    0    0     0   68135   63623    4512\n",
      "6048  湖北  2020-06-23    0    0     0   68135   63623    4512\n",
      "6049  湖北  2020-06-24    0    0     0   68135   63623    4512\n",
      "6050  湖北  2020-06-25    0    0     0   68135   63623    4512\n",
      "6051  湖北  2020-06-26    0    0     0   68135   63623    4512\n",
      "6052  湖北  2020-06-27    0    0     0   68135   63623    4512\n",
      "6053  湖北  2020-06-28    0    0     0   68135   63623    4512\n",
      "6054  湖北  2020-06-29    0    0     0   68135   63623    4512\n",
      "6055  湖北  2020-06-30    0    0     0   68135   63623    4512\n",
      "\n",
      "[184 rows x 8 columns]\n"
     ]
    }
   ],
   "source": [
    "# 导入所需的库\n",
    "import pandas as pd\n",
    "data6 = pd.read_csv('task3_2.csv',encoding='ANSI')\n",
    "data6 = data6[data6['省份']=='湖北']\n",
    "# 类型转变\n",
    "data6['累计确诊人数']= data6['累计确诊人数'].astype(int)\n",
    "data6['累计治愈人数']= data6['累计治愈人数'].astype(int)\n",
    "data6['累计确诊死亡']= data6['累计确诊死亡'].astype(int)\n",
    "# 取训练集和测试集，1-3月为训练集，4-6月为测试集\n",
    "train_hubei = data6[data6['日期']<'2020-03-31']\n",
    "test_hubei = data6[data6['日期']>='2020-03-31']  \n",
    "\n",
    "print(train_hubei)\n",
    "print(test_hubei)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 243,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "      省份          日期 新增确诊 新增治愈  新增死亡  累计确诊人数  累计治愈人数  累计确诊死亡  \\\n",
      "81    湖北  2020-03-31    1   73     6   67802   62778    3193   \n",
      "82    湖北  2020-04-01    0   45     6   67802   62823    3199   \n",
      "83    湖北  2020-04-02    0   41     4   67802   62864    3203   \n",
      "84    湖北  2020-04-03    1   50     4   67803   62914    3207   \n",
      "85    湖北  2020-04-04    0   73     3   67803   62987    3210   \n",
      "86    湖北  2020-04-05    0   69     2   67803   63056    3212   \n",
      "87    湖北  2020-04-06    0   59     0   67803   63115    3212   \n",
      "88    湖北  2020-04-07    0   69     1   67803   63184    3213   \n",
      "89    湖北  2020-04-08    0   45     2   67803   63229    3215   \n",
      "90    湖北  2020-04-09    0   49     1   67803   63278    3216   \n",
      "91    湖北  2020-04-10    0   28     3   67803   63306    3219   \n",
      "92    湖北  2020-04-11    0   17     0   67803   63323    3219   \n",
      "93    湖北  2020-04-12    0   57     2   67803   63380    3221   \n",
      "94    湖北  2020-04-13    0   25     0   67803   63405    3221   \n",
      "95    湖北  2020-04-14    0   39     1   67803   63444    3222   \n",
      "96    湖北  2020-04-15    0   33     0   67803   63477    3222   \n",
      "97    湖北  2020-04-16  325   10  1290   68128   63487    4512   \n",
      "98    湖北  2020-04-17    0    7     0   68128   63494    4512   \n",
      "99    湖北  2020-04-18    0   13     0   68128   63507    4512   \n",
      "100   湖北  2020-04-19    0    4     0   68128   63511    4512   \n",
      "101   湖北  2020-04-20    0    3     0   68128   63514    4512   \n",
      "102   湖北  2020-04-21    0    5     0   68128   63519    4512   \n",
      "103   湖北  2020-04-22    0   28     0   68128   63547    4512   \n",
      "104   湖北  2020-04-23    0   22     0   68128   63569    4512   \n",
      "105   湖北  2020-04-24    0   24     0   68128   63593    4512   \n",
      "106   湖北  2020-04-25    0   11     0   68128   63604    4512   \n",
      "107   湖北  2020-04-26    0   12     0   68128   63616    4512   \n",
      "108   湖北  2020-04-27    0    0     0   68128   63616    4512   \n",
      "109   湖北  2020-04-28    0    0     0   68128   63616    4512   \n",
      "110   湖北  2020-04-29    0    0     0   68128   63616    4512   \n",
      "...   ..         ...  ...  ...   ...     ...     ...     ...   \n",
      "6026  湖北  2020-06-01    0    0     0   68135   63620    4512   \n",
      "6027  湖北  2020-06-02    0    0     0   68135   63620    4512   \n",
      "6028  湖北  2020-06-03    0    0     0   68135   63620    4512   \n",
      "6029  湖北  2020-06-04    0    3     0   68135   63623    4512   \n",
      "6030  湖北  2020-06-05    0    0     0   68135   63623    4512   \n",
      "6031  湖北  2020-06-06    0    0     0   68135   63623    4512   \n",
      "6032  湖北  2020-06-07    0    0     0   68135   63623    4512   \n",
      "6033  湖北  2020-06-08    0    0     0   68135   63623    4512   \n",
      "6034  湖北  2020-06-09    0    0     0   68135   63623    4512   \n",
      "6035  湖北  2020-06-10    0    0     0   68135   63623    4512   \n",
      "6036  湖北  2020-06-11    0    0     0   68135   63623    4512   \n",
      "6037  湖北  2020-06-12    0    0     0   68135   63623    4512   \n",
      "6038  湖北  2020-06-13    0    0     0   68135   63623    4512   \n",
      "6039  湖北  2020-06-14    0    0     0   68135   63623    4512   \n",
      "6040  湖北  2020-06-15    0    0     0   68135   63623    4512   \n",
      "6041  湖北  2020-06-16    0    0     0   68135   63623    4512   \n",
      "6042  湖北  2020-06-17    0    0     0   68135   63623    4512   \n",
      "6043  湖北  2020-06-18    0    0     0   68135   63623    4512   \n",
      "6044  湖北  2020-06-19    0    0     0   68135   63623    4512   \n",
      "6045  湖北  2020-06-20    0    0     0   68135   63623    4512   \n",
      "6046  湖北  2020-06-21    0    0     0   68135   63623    4512   \n",
      "6047  湖北  2020-06-22    0    0     0   68135   63623    4512   \n",
      "6048  湖北  2020-06-23    0    0     0   68135   63623    4512   \n",
      "6049  湖北  2020-06-24    0    0     0   68135   63623    4512   \n",
      "6050  湖北  2020-06-25    0    0     0   68135   63623    4512   \n",
      "6051  湖北  2020-06-26    0    0     0   68135   63623    4512   \n",
      "6052  湖北  2020-06-27    0    0     0   68135   63623    4512   \n",
      "6053  湖北  2020-06-28    0    0     0   68135   63623    4512   \n",
      "6054  湖北  2020-06-29    0    0     0   68135   63623    4512   \n",
      "6055  湖北  2020-06-30    0    0     0   68135   63623    4512   \n",
      "\n",
      "      Holt_Winter_Confirmed  Holt_Winter_Recovered  Holt_Winter_Deaths  \n",
      "81             68218.941190           63092.235950         3206.672887  \n",
      "82             68636.882380           63479.471900         3226.345774  \n",
      "83             69054.823570           63866.707850         3246.018661  \n",
      "84             69472.764760           64253.943801         3265.691547  \n",
      "85             69890.705950           64641.179751         3285.364434  \n",
      "86             70308.647140           65028.415701         3305.037321  \n",
      "87             70726.588330           65415.651651         3324.710208  \n",
      "88             71144.529520           65802.887601         3344.383095  \n",
      "89             71562.470710           66190.123551         3364.055982  \n",
      "90             71980.411899           66577.359501         3383.728869  \n",
      "91             72398.353089           66964.595452         3403.401755  \n",
      "92             72816.294279           67351.831402         3423.074642  \n",
      "93             73234.235469           67739.067352         3442.747529  \n",
      "94             73652.176659           68126.303302         3462.420416  \n",
      "95             74070.117849           68513.539252         3482.093303  \n",
      "96             74488.059039           68900.775202         3501.766190  \n",
      "97             74906.000229           69288.011152         3521.439077  \n",
      "98             75323.941419           69675.247103         3541.111963  \n",
      "99             75741.882609           70062.483053         3560.784850  \n",
      "100            76159.823799           70449.719003         3580.457737  \n",
      "101            76577.764989           70836.954953         3600.130624  \n",
      "102            76995.706179           71224.190903         3619.803511  \n",
      "103            77413.647369           71611.426853         3639.476398  \n",
      "104            77831.588559           71998.662803         3659.149285  \n",
      "105            78249.529749           72385.898754         3678.822171  \n",
      "106            78667.470939           72773.134704         3698.495058  \n",
      "107            79085.412129           73160.370654         3718.167945  \n",
      "108            79503.353319           73547.606604         3737.840832  \n",
      "109            79921.294509           73934.842554         3757.513719  \n",
      "110            80339.235698           74322.078504         3777.186606  \n",
      "...                     ...                    ...                 ...  \n",
      "6026          132581.884442          122726.572272         6236.297462  \n",
      "6027          132999.825632          123113.808223         6255.970349  \n",
      "6028          133417.766822          123501.044173         6275.643236  \n",
      "6029          133835.708012          123888.280123         6295.316123  \n",
      "6030          134253.649202          124275.516073         6314.989010  \n",
      "6031          134671.590392          124662.752023         6334.661897  \n",
      "6032          135089.531582          125049.987973         6354.334784  \n",
      "6033          135507.472772          125437.223923         6374.007670  \n",
      "6034          135925.413962          125824.459874         6393.680557  \n",
      "6035          136343.355152          126211.695824         6413.353444  \n",
      "6036          136761.296341          126598.931774         6433.026331  \n",
      "6037          137179.237531          126986.167724         6452.699218  \n",
      "6038          137597.178721          127373.403674         6472.372105  \n",
      "6039          138015.119911          127760.639624         6492.044992  \n",
      "6040          138433.061101          128147.875574         6511.717878  \n",
      "6041          138851.002291          128535.111525         6531.390765  \n",
      "6042          139268.943481          128922.347475         6551.063652  \n",
      "6043          139686.884671          129309.583425         6570.736539  \n",
      "6044          140104.825861          129696.819375         6590.409426  \n",
      "6045          140522.767051          130084.055325         6610.082313  \n",
      "6046          140940.708241          130471.291275         6629.755200  \n",
      "6047          141358.649431          130858.527225         6649.428086  \n",
      "6048          141776.590621          131245.763176         6669.100973  \n",
      "6049          142194.531811          131632.999126         6688.773860  \n",
      "6050          142612.473001          132020.235076         6708.446747  \n",
      "6051          143030.414191          132407.471026         6728.119634  \n",
      "6052          143448.355381          132794.706976         6747.792521  \n",
      "6053          143866.296571          133181.942926         6767.465408  \n",
      "6054          144284.237761          133569.178876         6787.138294  \n",
      "6055          144702.178951          133956.414827         6806.811181  \n",
      "\n",
      "[184 rows x 11 columns]\n"
     ]
    }
   ],
   "source": [
    "# 导入所需要的库，其中mean_squared_error用于计算均方根误差，ExponentialSmoothing用于指数平滑预测\n",
    "# 思路：接下来对湖北数据进行预测，先复制一份进行实验，然后利用指数平滑的模型进行预测，调整参数，季节性影响不大，在ExponentialSmoothing()方法的seasonal参数设置为None\n",
    "from sklearn.metrics import mean_squared_error  \n",
    "from math import sqrt  \n",
    "from statsmodels.tsa.holtwinters import ExponentialSmoothing\n",
    "hubei_avg = test_hubei.copy()\n",
    "fit1 = ExponentialSmoothing(np.asarray(train_hubei['累计确诊人数']), trend='add', seasonal=None ).fit()  \n",
    "fit2 = ExponentialSmoothing(np.asarray(train_hubei['累计治愈人数']), trend='add', seasonal=None ).fit()  \n",
    "fit3 = ExponentialSmoothing(np.asarray(train_hubei['累计确诊死亡']), trend='add', seasonal=None ).fit()  \n",
    "hubei_avg['Holt_Winter_Confirmed'] = fit1.forecast(len(test_hubei))  \n",
    "hubei_avg['Holt_Winter_Recovered'] = fit2.forecast(len(test_hubei))  \n",
    "hubei_avg['Holt_Winter_Deaths'] = fit3.forecast(len(test_hubei))  \n",
    "print(hubei_avg)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 对预测结果和实际的test_hubei数据进行对比，可以看出，累计确诊人数,累计治愈人数, 累计确诊死亡三项数据的预测结果与实际情况的契合程度还是不错的，但越往后面契合度越差了"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 248,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The mean squared error of 累计确诊人数 is : 44321.331717792425\n",
      "The mean squared error of 累计治愈人数 is : 40558.20113389595\n",
      "The mean squared error of 累计确诊死亡 is : 1231.1525852852253\n"
     ]
    }
   ],
   "source": [
    "# 接下来对预测结果计算均方根误差\n",
    "rms1 = sqrt(mean_squared_error(hubei_avg['累计确诊人数'], hubei_avg['Holt_Winter_Confirmed']))\n",
    "rms2 = sqrt(mean_squared_error(hubei_avg['累计治愈人数'], hubei_avg['Holt_Winter_Recovered']))\n",
    "rms3 = sqrt(mean_squared_error(hubei_avg['累计确诊死亡'], hubei_avg['Holt_Winter_Deaths']))\n",
    "print('The mean squared error of 累计确诊人数 is : ' + str(rms1))  \n",
    "print('The mean squared error of 累计治愈人数 is : ' + str(rms2))  \n",
    "print('The mean squared error of 累计确诊死亡 is : ' + str(rms3))  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 可以看出，对于累计确诊人数、累计治愈人数、累计确诊死亡的数据均方差较大，预测结果与实际差距可能较大，这是由于用作训练集的前三个月数据一直呈递增状态，而用作测试集的后三个月数据基本不变导致的，从而可以看出湖北疫情在后三个月中得到了控制。若想预测和实际的契合度更好，可以利用前2个月的数据进行划分训练集和测试集。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
